else if (strcmp (names[i], "modifiers") == 0)
{
if (!_gtk_builder_flags_from_string (GDK_TYPE_MODIFIER_TYPE,
+ NULL,
values[i],
&modifiers,
error))
{
guint flags_value;
- if (!_gtk_builder_flags_from_string (type, string, &flags_value, error))
+ if (!_gtk_builder_flags_from_string (type, NULL, string, &flags_value, error))
{
ret = FALSE;
break;
gboolean
_gtk_builder_flags_from_string (GType type,
+ GFlagsValue *aliases,
const gchar *string,
guint *flags_value,
GError **error)
{
GFlagsClass *fclass;
gchar *endptr, *prevptr;
- guint i, j, value;
+ guint i, j, k, value;
gchar *flagstr;
GFlagsValue *fv;
const gchar *flag;
if (endptr > flag)
{
*endptr = '\0';
- fv = g_flags_get_value_by_name (fclass, flag);
+
+ fv = NULL;
+
+ if (aliases)
+ {
+ for (k = 0; aliases[k].value_nick; k++)
+ {
+ if (g_ascii_strcasecmp (aliases[k].value_nick, flag) == 0)
+ {
+ fv = &aliases[k];
+ break;
+ }
+ }
+ }
+
+ if (!fv)
+ fv = g_flags_get_value_by_name (fclass, flag);
if (!fv)
fv = g_flags_get_value_by_nick (fclass, flag);
if (bind_flags_str)
{
- if (!_gtk_builder_flags_from_string (G_TYPE_BINDING_FLAGS, bind_flags_str, &bind_flags, error))
+ if (!_gtk_builder_flags_from_string (G_TYPE_BINDING_FLAGS, NULL, bind_flags_str, &bind_flags, error))
{
_gtk_builder_prefix_error (data->builder, data->ctx, error);
return;
const gchar *string,
gint *enum_value,
GError **error);
-gboolean _gtk_builder_flags_from_string (GType type,
- const char *string,
- guint *value,
- GError **error);
+gboolean _gtk_builder_flags_from_string (GType type,
+ GFlagsValue *aliases,
+ const char *string,
+ guint *value,
+ GError **error);
const gchar * _gtk_builder_parser_translate (const gchar *domain,
const gchar *context,
const gchar *text);
if (modifiers_str != NULL)
{
- if (!_gtk_builder_flags_from_string (GDK_TYPE_MODIFIER_TYPE,
+ GFlagsValue aliases[2] = {
+ { 0, "primary", "primary" },
+ { 0, NULL, NULL }
+ };
+
+ aliases[0].value = _gtk_get_primary_accel_mod ();
+
+ if (!_gtk_builder_flags_from_string (GDK_TYPE_MODIFIER_TYPE, aliases,
modifiers_str, &modifiers, error))
{
_gtk_builder_prefix_error (data->builder, context, error);